﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace BU
{
    [Serializable()]
    public class BUWinkelwagen
    {
        private List<BUArtikel> artikelen;  //De lijst van artikelen in de winkelwagen
        private int volume; //het volume in milliliter

        public BUWinkelwagen()
        {
        }

        /// <summary>
        /// constructor voor deserializen
        /// </summary>
        /// <param name="info"></param>
        /// <param name="ctxt"></param>
        public BUWinkelwagen(SerializationInfo info, StreamingContext ctxt)
        {
            this.artikelen = (List<BUArtikel>)info.GetValue("Artikelen", typeof(List<BUArtikel>));
            this.volume = (int)info.GetValue("Volume", typeof(List<BUArtikel>));
        }

        /// <summary>
        /// Methode voor serializen
        /// </summary>
        /// <param name="info"></param>
        /// <param name="ctxt"></param>
        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("Artikelen", this.artikelen);
            info.AddValue("Volume", this.volume);
        }

        /// <summary>
        /// Berekent het totaal bedrag van de artikelen in de winkelwagen
        /// </summary>
        /// <returns></returns>
        public double BerekenBedrag()
        {
            double bedrag = 0;
            return bedrag;
        }

        /// <summary>
        /// Voegt een artikel toe aan de winkelwagen
        /// </summary>
        /// <param name="artikel">Het toe te voegen artikel</param>
        public void VoegArtikelToeAanWinkelwagen(BUArtikel artikel)
        {
            this.artikelen.Add(artikel);
        }

        /// <summary>
        /// Verwijdert een artikel uit de winkelwagen
        /// </summary>
        /// <param name="artikel">Het te verwijderen artikel</param>
        public void VerwijderArtikelUitWinkelwagen(BUArtikel artikel)
        {
            this.artikelen.Remove(artikel);
        }

        public List<BUArtikel> Artikelen
        {
            get { return artikelen; }
            set { artikelen = value; }
        }

        public int Volume
        {
            get { return volume; }
            set { volume = value; }
        }

    }
}
